﻿#ifndef MUSIC_H
#define MUSIC_H

#include <QUrl>


class Music
{
public:
    Music();
    Music(QUrl url);

    void setIsLike(bool isLike);
    void setIsHistory(bool isHistory);
    void setMusicName(const QString& musicName);
    void setSingerName(const QString& singerName);
    void setAlbumName(const QString& albumName);
    void setDuration(const qint64 duration);
    void setMusicUrl(const QUrl& url);
    void setMusicId(const QString& musicId);

    bool getIsLike()const;
    bool getIsHistory()const;
    QString getMusicName()const;
    QString getSingerName()const;
    QString getAlbumName()const;
    qint64 getDuration()const;
    QUrl getMusicUrl()const;
    QString getMusicId()const;
    QString getLrcPath()const;

    // 将歌曲信息写入到数据库中
    void insertMusicToDB();

private:
    void parseMediaMetaData();

private:
    bool isLike;    // 标记音乐是否为我喜欢
    bool isHistory; // 标记音乐是否播放过

    // 音乐的基本信息有：歌曲名称、歌手名称、专辑名称、总时长
    QString musicName;
    QString singerName;
    QString albumName;
    qint64 duration; // 音乐的持续时长，即播放总的时长(毫秒)

    // 为了标记歌曲的唯一性，给歌曲设置id
    // 磁盘上的歌曲文件经常删除或者修改位置，导致播放时找不到一件，或者重复添加
    // 此处用musicId来维护播放列表中音乐的唯一性
    QString musicId;
    QUrl musicUrl; // 音乐在磁盘中的位置

};

#endif // MUSIC_H
